package com.woniuxy.flowable.service;

import java.util.List;
import java.util.Map;

/**
 * 客户审批流程服务接口
 * @author woniuxy
 */
public interface CustomerFlowableService {
    
    /**
     * 启动客户审批流程
     * @param processDefinitionKey 流程定义Key
     * @param businessKey 业务Key
     * @param variables 流程变量
     * @return 流程实例ID
     */
    String startCustomerProcess(String processDefinitionKey, String businessKey, Map<String, Object> variables);
    
    /**
     * 查询客户审批待办任务
     * @param userName 用户名
     * @return 待办任务列表
     */
    List<Map<String, Object>> getPendingTasks(String userName);
    
    /**
     * 查询客户审批已办任务
     * @param userName 用户名
     * @return 已办任务列表
     */
    List<Map<String, Object>> getCompletedTasks(String userName);
    
    /**
     * 完成客户审批任务
     * @param taskId 任务ID
     * @param variables 流程变量
     */
    void completeTask(String taskId, Map<String, Object> variables);
    
    /**
     * 通过客户审批
     * @param taskId 任务ID
     */
    void approveTask(String taskId);
    
    /**
     * 拒绝客户审批
     * @param taskId 任务ID
     * @param reason 拒绝原因
     */
    void rejectTask(String taskId, String reason);
    
    /**
     * 获取客户审批流程状态
     * @param processInstanceId 流程实例ID
     * @return 流程状态信息
     */
    Map<String, Object> getProcessStatus(String processInstanceId);
    
    /**
     * 获取客户审批流程步骤
     * @param processInstanceId 流程实例ID
     * @return 流程步骤列表
     */
    List<Map<String, Object>> getProcessSteps(String processInstanceId);
}
